TA DIrextXの魔導書
TAはtouaK_aOiの略
結局 : WINDOWSAPIの支配下 :touka_kanasi
WINDOWS API の話じゃないか!!!!!
メモ書き程度に
グラフィックパイプライン
https://scrapbox.io/files/6134b23932f664002330eb34.png
IA Input-Assembler
バイト列を解釈するステージ->頂点レイアウトという
VS Vertex Shader
頂点を変換するステージ
平行移動、回転
ローカル->ワールド->カメラ->SS(スクリーンスペース)
https://scrapbox.io/files/6134b4100ed411001d7ab23d.png
HS Hull Shader
テッセレーションのために
パッチ定数はストライド的なものかな(4とか、3とか)
出力パッチデータは分割された後のデータでHoudiniでいうプリミティブ?
これがコントロールポイントともいう
実際使ってみないとわからん
TS tesselator
Hull Shaderの情報をもとに分割するためのプロパティをつくる
ドメインロケーションという
ノンプログラマブル
アルゴリズムは不明
DS Domain Shader
HSとTSで作られたドメインロケーション、コントロールポイント、パッチ定数からポリゴンを分割する
GS geometory Shader
プリミティブ単位での加工を行う
シャドウボリューム
フィン法ファー表現
RS Rasterizer
ラスタライズするステージ
スキャンライン法
頂点補間もここで行う
ノンプログラマブル
PS Pixel Shader
色をつけるステージ
OM Output-Merger
深度テスト(Z値テスト)
ブレンドをするかどうか
HLSL
matrix (4*4) のインデックス指定
mをつけることで0始まりだが、基本は1始まり
code:HLSL
matrix world = mat;
world._12 // 1行2列
wordl._m01 //1行2列
掛け算
*ではなくmulを使う
code:HLSL
mul(mat1, mat2)
セマンティクス
パイプラインを下っていくときには意味づけをしてあげる必要がある
code:HLSL
matrix pos :POSITION;
このセマンティクスはIAにて記述する。
ref
EnumAdapters
EnumAdapters(i, &tmpAdapter)
アダプターにアクセスする
code:diretx12.cpp
EnumAdapters(i, &tmpAdapter)
//インデックス, アダプタのポインタ
DirectX12初期化
CreateDXGIFactory1
DXGIオブジェクトを生成する